class Solution:
    def merge_two(self,l1,l2):
        #合并两个降序的数组
        result=[]
        p1=0
        p2=0
        while p1<len(l1) and p2<len(l2):
            a,b=l1[p1],l2[p2]
            if(a+b>b+a):
                result.append(a)
                p1+=1
            else:
                result.append(b)
                p2+=1
        result=result+l1[p1:]
        result=result+l2[p2:]
        return result
    def sort_merge(self,L):
        #递归终止条件：
        if(len(L)==1):
            return L
        #递归分治，然后再对两个有序数组进行排序
        #从数组中间开始分治
        mid=len(L)//2
        left=L[0:mid]
        right=L[mid:]
        left=self.sort_merge(left)
        right=self.sort_merge(right)
        return self.merge_two(left,right)
    def largestNumber(self, nums):
        #将每一个元素转为字符串
        #然后字符串和字符串进行字典序的对比（与ASCII码有关）
        #例如'1'<'2'，以及'221'<'231'(第一位相同就继续比较第二位)
        #'A'<'a'
        #  数字的ASCII码    <大写字母的ASCII码   <小写字母
        nums=list(map(str,nums))
        #按照字典序进行降序排序，降序排序后，将列表串联为一个完整的字符串
        #不是直接比较 a>b
        #而是比较a+b>b+a
            #因为当字符首位相同的时，a>b不满足题意，例如'30'>'3'然而排序结果应该是'30'排在'3'的后面
            #因此说明，应该比较的是'330'>'303'
        #选择使用归并排序
        nums=self.sort_merge(nums)
        result=''.join(nums)
        return result

if __name__ == '__main__':
    s=Solution()
    print(s.largestNumber([0,0]))
    k='0.0.010'
    print(k.split('.'))
    k=k.split('.')
    k=list(map(int,k))
    k=list(map(str,k))
    print('10'>'1')